package futbol.tacticas.concursantes.TacticaTikiTiki;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
import futbol.tacticas.concursantes.Tactica;

/**
 *
 * @author Rikar
 */
public class TacticaTikiTiki implements Tactica{
    
    private int nDatos[][]={
        {-150,0,10}, // El Araña[0]
        {-100,20,5}, // TerremotoJesus[1]
        {-100,-20,5}, // TioLuco[2]
        {-80,80,4}, // NiñoMelon[3]
        {-80,-80,4}, // Pelirrojo[4]
        {-50,0,7}, // David[5]
        {-5,40,5}, // Patillas[6]
        {30,-35,5}, // Kike[7]
        {70,0,7}, // Alberto[8]
        {120,-20,5}, // Cristianhiño[9]
        {105,20,7}  // TikiTikiRikar[10]
        
    };
    /** Creates a new instance of TacticaRikar */
    public TacticaTikiTiki() {
    }
    
    public Color getColor1(){
        return Color.PINK;
    }
    
    public Color getColor2(){
        return Color.BLACK;
    }
    
    public Color getColorNumero(){
        return Color.WHITE;
    }
    
    public String getNombre(){
        return "El nombre es lo de menos C.F.";
    }
    
    public int getXInicial(int n){
        return nDatos[n][0];
    }
    
    public int getYInicial(int n){
        return nDatos[n][1];
    }
    
    public int getFuerza(int n){
        return nDatos[n][2];
    }
    
    public Vector<Comando> getComandos(SituacionJugadores sj) {
        
        Vector<Comando> accion=new Vector();
        
        //Posicionamiento en el campo
        for (int n=0;n<11;n++)
            accion.add(new ComandoIrA(n,nDatos[n][0],nDatos[n][1]));
        
        Point bola=sj.getBola();
        double coorX=bola.getX();
        double coorY=bola.getY();
        int numJug=sj.getMasCercanoDeBola();
        boolean yoMasCerca=sj.estoyMasCercaDeBola();
        Point nosotros[]=sj.getMisJugadores();
        Point ellos[]=sj.getContrario();
        
        
        //Movimiento del portero
        int y=(int)(bola.getY()/2);
        if (y<-20) y =-20;
        if (y>20) y=20;
        accion.add(new ComandoIrA(0,nDatos[0][0],y));
        
        /*Voy hacia la bola y si no estoy mas cerca que el contrario de ella además cubro 
        al resto de jugadores del equipo contrario en el caso de que la bola este en mi campo,
        sino voy a por el balón con el jugador mas cercano
        */
        if (bola.x<0){
         if (yoMasCerca) {
            accion.add(new ComandoIrA(numJug,coorX,coorY)); 
            //Me abro a las bandas y retrocedo al medio punta
            if (numJug!=6){
                accion.add(new ComandoIrA(6,75,80));
            }
            if (numJug!=7){
                accion.add(new ComandoIrA(7,75,-80));
            }
            if (numJug!=8){
                accion.add(new ComandoIrA(8,30,0));
            }
            
         }
            else {
                 if (numJug==0){  
                    numJug=sj.getSiguienteJugador(0); //si no estoy mas cerca, con el portero no voy
                 }
                 accion.add(new ComandoIrA(numJug,coorX,coorY));
                 int conCerca;
                 for (int n=1;n<7;n++){
                    if (n!=numJug){
                        conCerca=sj.getContrarioMasCerca(n);
                        accion.add(new ComandoIrA(n,ellos[conCerca].getX()+10,ellos[conCerca].getY()));
                    }
                 }
                 
            }
        }
        else{
            accion.add(new ComandoIrA(numJug,coorX,coorY));
        }
        
        //Defensa
        accion.add(new ComandoPase(0,1));
        accion.add(new ComandoPase(1,3));
        accion.add(new ComandoPase(2,4));
        accion.add(new ComandoPase(3,6));
        accion.add(new ComandoPase(4,7));
        
        
        //Medio campo
        if (bola.x>-50){
            accion.add(new ComandoPase(5,7));
        }
        else{
            accion.add(new ComandoPase(5,9));
        }
        accion.add(new ComandoPase(6,7));
        accion.add(new ComandoPase(7,10));
        if (bola.x>-20 && bola.x<40){
        accion.add(new ComandoPase(8,9));
        }
        
        
        //Delantera
        if (ellos[0].y<0){
            if (bola.x>40){
                accion.add(new ComandoTiroAPuerta(8,5));    
            }
            accion.add(new ComandoTiroAPuerta(9,17));
            accion.add(new ComandoTiroAPuerta(10,15));
        }
        else{
            if (bola.x>40){
                accion.add(new ComandoTiroAPuerta(8,-5));    
            }
            accion.add(new ComandoTiroAPuerta(9,-17));
            accion.add(new ComandoTiroAPuerta(10,-15));
        }
        
        return accion;
    
    }
}
